package com.cskaoyan.javase.oop1._12anonymous;

/**
 * 匿名对象的概念
 * 匿名（anonymous）或者佚名，指的是没有名字或者名字缺失。
 * 在Java当中，匿名对象指的就是没有名字的对象。
 * 或者，说的更清楚一点，就是：在创建对象时，就没有引用指向的对象，就是匿名对象！
 * 匿名对象的语法很简单，只需要在方法等位置中写下列语法：
 * new 类名();
 * 以上语法就得到了一个匿名对象，从实质上看：
 * 该对象没有栈上的引用指向，没有所谓的"对象名"，是一个匿名对象。
 *
 * 用途:
 *      1.直接使用,直接在后面调用方法,访问属性(比较少见)
 *      2.配合方法使用(主要用途)
 *          a.作为方法实参传入方法
 *          b.作为方法的返回值
 *
 * 优点：
 * 使用匿名对象，代码简洁（相当于少写了一些代码）这是匿名对象最主要的优点。
 * 匿名对象在使用完毕后会立刻成为"垃圾"等待GC回收，从理论角度上来说，可以提升内存利用率。
 * 但是GC不具有即时性，并不是一个对象更早成为"垃圾"就会更好回收，这个优点仅是理论上的。
 *
 * 缺点：
 * 匿名对象由于没有引用指向，所以它是一次性的，用完后就无法再次使用了。
 *
 *
 * @since 17:02
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        System.out.println(new Student().age);
        new Student().eat();
        Student s = new Student();
        test(s);
        test(new Student());
    }
    public static void test(Student s){}
    public static Student test(){
        // Student s = new Student();
        // return s;
        return new Student();
    }
}

class Student {
    int age;

    public void eat() {
        System.out.println("我今天晚上吃襄阳牛肉面~");
    }
}
